﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.OleDb;
using Domen;

namespace Sesija
{
    public class Broker
    {
        OleDbConnection konekcija;
        OleDbCommand komanda;

        private static Broker instanca;

        public static Broker DajInstancu()
        {
            if (instanca == null)
            {
                instanca = new Broker();
            }
            return instanca;
        }

        private void KonektujSe()
        {
            konekcija = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\Visual Studio 2012\SoketiINiti\SoketiINiti\Mesto.accdb;Persist Security Info=False");
            komanda = konekcija.CreateCommand();
        }

        private Broker()
        {
            KonektujSe();
        }

        public int UbaciMesto(Mesto m)
        {
            try
            {
                komanda.CommandText = "INSERT INTO TMesto VALUES(" + m.PttBroj + ",'" + m.Naziv + "')";
                komanda.CommandType = CommandType.Text;
                konekcija.Open();

                int rezultat = komanda.ExecuteNonQuery();
                return rezultat;
            }
            catch (Exception)
            {

                throw;
            }
            finally
            {
                if (konekcija != null)
                {
                    konekcija.Close();
                }
            }
        }

        public int UbaciMesoUBazuDrugiNacin(Mesto m)
        {
            try
            {
                komanda.CommandText = "INSERT INTO TMesto VALUES(?,?)";
                komanda.CommandType = CommandType.Text;
                komanda.Parameters.AddWithValue("PttBroj", m.PttBroj);
                komanda.Parameters.AddWithValue("Naziv", m.Naziv);
                konekcija.Open();

                int rezultat = komanda.ExecuteNonQuery();
                return rezultat;

            }
            catch (Exception)
            {

                throw;
            }
            finally
            {
                if (konekcija != null)
                {
                    konekcija.Close();
                }
            }
        }

        public List<Mesto> VratiSvaMesta()
        {
            List<Mesto> mestaL = new List<Mesto>();

            try
            {
                komanda.CommandText = "SELECT * FROM TMesto";
                komanda.CommandType = CommandType.Text;
                konekcija.Open();

                OleDbDataReader citac = komanda.ExecuteReader();

                while (citac.Read())
                {
                    Mesto m = new Mesto();
                    m.PttBroj = citac.GetInt32(0);
                    m.Naziv = citac.GetString(1);

                    mestaL.Add(m);
                }
                return mestaL;
            }
            catch (Exception)
            {

                throw;
            }
            finally
            {
                if (konekcija != null)
                {
                    konekcija.Close();
                }
            }
        }
    }
}
